package pages;

import java.util.ArrayList;
import java.util.List;

import webserver.Consts;
import webserver.HttpRequest;
import dao.DAO;
import dao.models.Answer;
import dao.models.Chapter;
import dao.models.Question;

public class AddNewEntry {

    private DAO dao = DAO.getInstance();

    public String getResultPage(HttpRequest rq) {

	if (rq.getValueByName("action").equals(Consts.ADD_NEW_QUESTION)) {
	    return addNewQuestion(rq);
	} else {
	    return addNewChapter(rq);
	}
    }

    private String addNewChapter(HttpRequest rq) {
	String chapterName = rq.getValueByName("name");
	String chapterText = rq.getValueByName("text");
	if (chapterName == null || chapterText == null) {
	    throw new RuntimeException("Bad params");
	}
	Chapter chapter = new Chapter();
	chapter.setName(chapterName);
	chapter.setText(chapterText);
	
	if (dao.addNewChapter(chapter)) {
	    return "Новая глава успешно добавленна";
	} else {
	    return "Не получилось добавить новую главу";
	}
    }

    private String addNewQuestion(HttpRequest rq) {
	String chapterId = rq.getValueByName("chapterid");
	String questionText = rq.getValueByName("question");
	String answersText = rq.getValueByName("answers");
	if (chapterId == null || questionText == null || answersText == null) {
	    throw new RuntimeException("Bad params");
	}

	Question question = new Question();
	question.setText(questionText);
	List<Answer> answers = new ArrayList<Answer>();
	for (String answerText : answersText.split("\n")) {
	    Answer answer = new Answer();
	    answer.setAnswer(answerText);
	    answers.add(answer);
	}
	question.setAnswers(answers);
	if (dao.addNewQuestionToChapter(chapterId, question)) {
	    return "Новый вопрос был успешно добавлен!";
	} else {
	    return "Во время добавления вопроса произошла ошибка.";
	}
    }
}
